home *** CD-ROM | disk | FTP | other *** search
- /********************************************
- ; File: MidiSynth.h
- ;
- ; Copyright Apple Computer, Inc. 1991
- ; All Rights Reserved
- ;
- ********************************************/
- #ifndef __TYPES__
- #include <TYPES.h>
- #endif
-
- /* Error Codes */
- #define msAlreadyStarted 0x2301 /* MidiSynth already started. */
- #define msNotStarted 0x2302 /* MidiSynth never started. */
- #define msNoDPMem 0x2303 /* Can't get direct page memory. */
- #define msNoMemBlock 0x2304 /* Can't get memory block. */
- #define msNoMiscTool 0x2305 /* Misc Tools not started. */
- #define msNoSoundTool 0x2306 /* Sound Tools not started. */
- #define msGenInUse 0x2307 /* Ensoniq generator in use. */
- #define msBadPortNum 0x2308 /* Illegal port number. */
- #define msPortBusy 0x2309 /* Port is busy. */
- #define msParamRangeErr 0x230a /* Parameter range error. */
- #define msMsgQueueFull 0x230b /* Message queue full. */
- #define msRecBufFull 0x230c /* Rec buffer is full. */
- #define msOutputDisabled 0x230d /* MIDI output disabled. */
- #define msMessageError 0x230e /* Message error. */
- #define msOutputBufFull 0x230f /* MIDI output buffer is full. */
- #define msDriverNotStarted 0x2310 /* Driver not started. */
- #define msDriverAlreadySet 0x2311 /* Driver already set. */
- #define msDevNotAvail 0x2380 /* the requested device is not available */
- #define msDevSlotBusy 0x2381 /* requested slot is already in use */
- #define msDevBusy 0x2382 /* the requested device is already in use */
- #define msDevOverrun 0x2383 /* device overrun by incoming MIDI data */
- #define msDevNoConnect 0x2384 /* no connection to MIDI */
- #define msDevReadErr 0x2385 /* framing error in received MIDI data */
- #define msDevVersion 0x2386 /* ROM version is incompatible with device driver */
- #define msDevIntHndlr 0x2387 /* conflicting interrupt handler is installed */
-
- /* structure definitions */
- typedef struct {
- byte reserved1[0x0c];
- word MpacketStat;
- word MpacketData1;
- word MpacketData2;
- byte SeqClockFrac;
- long SeqClockInt;
- byte reserved2[0x31-0x16];
- byte SeqItemStat;
- byte SeqItemData1;
- byte SeqItemData2;
- byte reserved3[0x3f-0x33];
- byte MetroVol;
- byte reserved4[0xe4-0x3f];
- word MetroFreq;
- byte reserved5[0xea-0xe5];
- byte SeqItemTrack;
- byte reserved6;
- byte PacketBytes;
- byte reserved7[0x100-0xec];
- } msDirectPage, *msDirectPagePtr, **msDirectPageHndl;
-
- typedef struct {
- msDirectPagePtr directPage;
- long reserved;
- } GetMSDataOutputRec, *GetMSDataOutputRecPtr, **GetMSDataOutputRecHndl;
-
- typedef struct {
- word measureNumber;
- word beatNumber;
- word msRemainder;
- } MeasureRec, *MeasureRecPtr, **MeasureRecHndl;
-
- typedef struct {
- ProcPtr EndSeq;
- ProcPtr UserMeter;
- ProcPtr Mstart;
- ProcPtr Mstop;
- ProcPtr PacketIn;
- ProcPtr SeqEvent;
- ProcPtr SysEx;
- ProcPtr PacketOut;
- ProcPtr PgmChange;
- ProcPtr Mcontinue;
- ProcPtr SMarker;
- ProcPtr RecBufFull;
- ProcPtr Reserved1;
- ProcPtr Reserved2;
- } CallBackRec, *CallBackRecPtr, **CallBackRecHndl;
-
- typedef struct {
- pointer PbufStart;
- long Reserved;
- pointer RbufStart;
- pointer RbufEnd;
- word SeqFlags;
- long theClock;
- } SeqPlayRec, *SeqPlayRecPtr, **SeqPlayRecHndl;
-
- typedef struct {
- byte AttackLevel;
- byte AttackRate;
- byte Decay1Level;
- byte Decay1Rate;
- byte Decay2Level;
- byte Decay2Rate;
- byte SustainLevel;
- byte Decay3Rate;
- byte Release1Level;
- byte Release1Rate;
- byte Release2Level;
- byte Release2Rate;
- byte Release3Rate;
- byte DecayGain;
- byte VelocityGain;
- byte PitchBendRange;
- } EnvelopeRec, *EnvelopeRecPtr, **EnvelopeRecHndl;
-
- typedef struct {
- byte TopKey;
- byte OscConfig;
- byte Stereo;
- byte Detune;
- byte WaveAddrA;
- byte WaveSizeA;
- byte VolumeA;
- byte OctaveA;
- byte SemitoneA;
- byte FindTuneA;
- byte WavAddrB;
- byte WaveSizeB;
- byte VolumeB;
- byte OctaveB;
- byte SemitoneB;
- byte FineTuneB;
- } WavelistRec, *WavelistRecPtr, **WavelistRecHndl;
-
- typedef struct {
- EnvelopeRec gen1EnvRec;
- WavelistRec gen1WaveRecs[8];
- EnvelopeRec gen2EnvRec;
- WavelistRec gen2WaveRecs[8];
- } InstrumentRec, *InstrumentRecPtr, **InstrumentRecHndl;
-
- typedef struct {
- byte TrackNum;
- byte TimeStampHigh;
- byte TimeStampLow;
- byte TimeStampMid;
- byte DataByteCount;
- byte MIDIStat;
- byte DataByte1;
- byte DataByte2;
- } SeqItemRec, *SeqItemRecPtr, **SeqItemRecHndl;
-
- /* available calls */
- extern pascal void MSBootInit() inline(0x0123,dispatcher);
- extern pascal void MSStartUp() inline(0x0223,dispatcher);
- extern pascal void MSShutDown() inline(0x0323,dispatcher);
- extern pascal word MSVersion() inline(0x0423,dispatcher);
- extern pascal void MSReset() inline(0x0523,dispatcher);
- extern pascal word MSStatus() inline(0x0623,dispatcher);
-
- extern GetMSDataOutputRec GetMSData();
- extern pascal void SetCallBack() inline(0x1723,dispatcher);
- extern pascal void MSSuspend() inline(0x2223,dispatcher);
- extern pascal void MSResume() inline(0x2323,dispatcher);
- extern pascal void InitMIDIDriver() inline(0x2723,dispatcher);
- extern pascal void RemoveMIDIDriver() inline(0x2823,dispatcher);
- extern pascal void SetMIDIPort() inline(0x1323,dispatcher);
- extern pascal void SetMIDIMode() inline(0x0a23,dispatcher);
- extern pascal void SetBasicChannel() inline(0x0923,dispatcher);
- extern pascal void SetVelComp() inline(0x1223,dispatcher);
- extern pascal void SysExOut() inline(0x1823,dispatcher);
- extern pascal void SetInstrument() inline(0x1423,dispatcher);
- extern pascal void PlayNote() inline(0x0b23,dispatcher);
- extern pascal void StopNote() inline(0x0c23,dispatcher);
- extern pascal void MIDIMessage() inline(0x1a23,dispatcher);
- extern pascal void KillAllNotes() inline(0x0d23,dispatcher);
- extern pascal void SetTuningTable() inline(0x2423,dispatcher);
- extern pascal void GetTuningTable() inline(0x2523,dispatcher);
- extern pascal void SetTempo() inline(0x1623,dispatcher);
- extern pascal void SetBeat() inline(0x1923,dispatcher);
- extern pascal void SetRecTrack() inline(0x0e23,dispatcher);
- extern pascal void SetPlayTrack() inline(0x0f23,dispatcher);
- extern pascal void SeqPlayer() inline(0x1523,dispatcher);
- extern pascal void SetMetro() inline(0x1e23,dispatcher);
- extern pascal void TrackToChannel() inline(0x1023,dispatcher);
- extern pascal void SetTrackOut() inline(0x2623,dispatcher);
- extern pascal void Merge() inline(0x1c23,dispatcher);
- extern pascal SeqItemRecPtr Locate() inline(0x1123,dispatcher);
- extern pascal pointer LocateEnd() inline(0x1b23,dispatcher);
- extern pascal void DeleteTrack() inline(0x1d23,dispatcher);
- extern pascal long ConvertToTime() inline(0x2023,dispatcher);
- extern MeasureRec ConvertToMeasure();
-
-